package proyecto.DataAccessObject;

import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import proyecto.EntityBeans.Tutor;

@Stateless
@Remote(TutorDAORemote.class)
public class TutorDAO implements TutorDAORemote{

	@PersistenceContext
	EntityManager entityManager;


	public int save (Tutor tutor){		
		try{			
			entityManager.persist(tutor);			
		} 
		catch(Exception e){
			e.printStackTrace();
		}	
		
		return tutor.getIdPersona();
	}
	

	public Tutor findById(int id) {
		return entityManager.find(Tutor.class, id);
		
	}
	
		
	public void merge(Tutor tutor) {
		try{						
			entityManager.merge(tutor);
		} 
		catch(Exception e){
			e.printStackTrace();
		}
	}
	
		
	public List findAll() {		
		return entityManager.createQuery("from Tutor").getResultList();
	}
	
	
	public List findAllNoBaja()
	{	     
	      return entityManager.createQuery("select t from Tutor t where t.fechaBaja=null").getResultList();
	}
	
	
	public List findAllBaja()
	{	     
	      return entityManager.createQuery("select t from Tutor t where t.fechaBaja!=null").getResultList();
	}
	
	
	public List findByIdList(int id)
	{	     
	      return entityManager.createQuery("select t from Tutor t where t.idTutor = :idTutor").setParameter("idTutor", id).getResultList();
	}
	
	
	public List findByNombreApellidoDni(String nombre, String apellido, int dni)
	{	     
	      return entityManager.createQuery("select t from Tutor t where ((t.nombre like :nombre and t.apellido like :apellido) or t.dni = :dni)").setParameter("nombre", nombre).setParameter("apellido", apellido).setParameter("dni", dni).getResultList();
	}
	
		
	public void remove(int idTutor){	
		entityManager.remove(entityManager.find(Tutor.class, idTutor));
	}
	

	public void refresh(Tutor tutor){
		entityManager.refresh(tutor);
	}
}
